﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Terrae.Datos.IDaos;
using Terrae.Datos.DaoSqlServer;

namespace Terrae.Datos.FabricaDao
{
    public abstract class FabricaDao
    {
        #region Contructor

        /// <summary>
        /// Constructor vacio de la clase FabricaDao.
        /// </summary>
        public FabricaDao()
        {
        }
        
        #endregion Constructor

        #region Métodos

        #region Seleccion BD

        /// <summary>
        /// Método que selecciona la instancia de la base de datos a usar.
        /// </summary>
        /// <param name="tipoFabrica"></param>
        /// <returns></returns>
        public static FabricaDao CrearFabricaDeDAO(int tipoFabrica)
        {
            switch (tipoFabrica)
            {
                case 1:
                    return FabricaSqlServer.getInstacia();
                case 2:
                //return FabricaDAOOracle.getInstancia();
                default:
                    return null;
            }
        }

        #endregion Seleccion BD

        /// <summary>
        /// Creación de la Interfaz para Acceder a las funciones de
        /// las Personas.
        /// </summary>
        /// <returns></returns>
        public abstract IDaoPersona ObtenerDaoPersona();

        /// <summary>
        /// Creacion de la interfaz para acceder a las funciones de 
        /// las Plantas.
        /// </summary>
        /// <returns></returns>
        public abstract IDaoPlanta ObtenerDaoPlanta();

        /// <summary>
        /// Creación de la interfaz para acceder a las funciones de
        /// los Invernaderos.
        /// </summary>
        /// <returns></returns>
        public abstract IDaoInvernadero ObtenerDaoInvernadero();

        #endregion Métodos
    }
}